// SPDX-License-Identifier: GPL-2.0+

#include <common.h>
#include <pci.h>
#include <usb.h>
#include <scsi.h>
#include <ahci.h>
#include <led.h>
#include <asm/io.h>

#include <mach/ls2h.h>

#include "platform.h"

extern void user_env_fetch(void);

int __weak ls2k_board_late_init(void)
{
	return 0;
}

int checkboard(void)
{
	printf("Board: %s\n", CONFIG_LOONGSON_BOARD_NAME);

	return 0;
}

int board_late_init(void)
{
	if (IS_ENABLED(CONFIG_LED)) {
		led_default_state();
	}

	ls2k_board_late_init();

	user_env_fetch();

	return 0;
}

int misc_init_r(void)
{
	return 0;
}

#ifdef CONFIG_BOARD_EARLY_INIT_R
extern int tlb_init_default(void);

int board_early_init_r(void)
{
	u32 val;

	//stop usb reset
	val = readl(LS2H_CHIP_CONFIG0);
	val = val | (1 << 26);
	writel(val, LS2H_CHIP_CONFIG0);

	tlb_init_default();

	return 0;
}
#endif

#ifdef CONFIG_LAST_STAGE_INIT
int last_stage_init(void)
{
	return 0;
}
#endif

void ls_pcie_fixup(int port_fix)
{
}

#if defined(CONFIG_SYS_CONSOLE_IS_IN_ENV) && \
defined(CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE)
int overwrite_console(void)
{
	env_set("stdout", "serial");

	return 0;
}
#endif
